package com.zhx.common.user.service.impl;

import com.zhx.common.user.domain.enums.RoleEnum;
import com.zhx.common.user.service.IRoleService;
import com.zhx.common.user.service.cache.UserCache;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;
import java.util.Set;


@Service
@Slf4j
public class RoleServiceImpl implements IRoleService {
    @Resource
    private UserCache userCache;


    /**
     * 判断用户是否拥有某个权限
     *
     * @param uid 用户ID
     * @param roleEnum 角色枚举
     * @return 如果用户是管理员或拥有指定角色则返回true，否则返回false
     */
    @Override
    public boolean hasPower(Long uid, RoleEnum roleEnum) {
        Set<Long> roles = userCache.getRoleSetByUid(uid);
        return isAdmin(roles) || roles.contains(roleEnum.getId());
    }

    /**
     * 判断用户是否具有管理员角色
     *
     * @param roleSet 用户角色集合
     * @return 如果用户具有管理员角色，返回true；否则返回false
     */
    private boolean isAdmin(Set<Long> roleSet) {
        return roleSet.contains(RoleEnum.ADMIN.getId());
    }
}
